In the computer industry today, software applications exist which service a wide variety of user needs. Individual applications are typically optimized so as to excel in a particular functional area, while offering sub-optimal or minimal performance in other functional areas. For example, spreadsheet applications are typically adept at producing data tables and graphs of the data in these tables, but perform rather poorly when called upon to produce an intricately formatted text document. On the other hand, word processing applications tend to handle the production of highly formatted text documents with ease, but generally handle data tabulation and graphing functions poorly. Given this strong division of functionally among applications, the typical user often requires some degree of information sharing among the various applications being employed. Application integration strategies allow some degree of information sharing by allowing the user to invoke a single application which, in turn, calls upon associated specialized applications are required. However, the efficient and user-friendly sharing of information between different applications continues to prove a stumbling point for the computer industry as a whole.
In 1992 Microsoft Corp. released a protocol, Object Linking and Embedding (OLE), that enables one application to use the services of other applications through a nearly transparent interface. The OLE protocol allows applications which support the protocol to incorporate objects which contain links to other applications. Objects, as the term is used herein, can include text, charts, graphs, spreadsheet tables, bitmap images, vector drawings, sound bites, video clips, programs, and nearly anything else that can be displayed, controlled, or manipulated by a software application.
In the OLE protocol, the object that contains the linked or embedded objects is referred to as a container object. A container object contains other objects that are still connected to the original application that created them, where the connections can either be a linked connection or an embedded connection. Linked connections are connections where the actual data associated with the contained object resides in another, separate object. In such a case, the information necessary to establish and maintain a linked connection is simply a reference to the contained object. Embedded connections, on the other hand, are connections where the actual data associated with the contained object resides within the container object. In either case, the contained object can only be edited by the application that originally created it.
OLE and OLE-type integration strategies allow the user to focus on the central task at hand, without requiring explicit knowledge or control of the applications needed to accomplish the task. In the case of OLE, the applications required to perform a given task are brought to the user in a preferred format or context, when necessary. Also, files tend to be more compact when the linking-type application integration strategies are employed because linking to an object allows an application data file to reflect information about the linked object without having the object's data physically stored and maintained in the data file.
OLE and OLE-type integration strategies constitute a significant step towards effective integration of a variety of individual software applications. However, these type integration strategies necessarily require that certain data be stored with a linked or embedded object, thus providing the information necessary for tracking the embedded or linked object back to the originating application. More particularly, both embedding and conventional linking create "hard" connections between the linked/embedded object and the application which originally created the object. That is, the connection is to a specific application that does not change. Thus, the linked/embedded object requires a pre-defined connection path to the outside application.
From a user's perspective, it is desirable to have a more flexible arrangement, one where the connection between objects and applications did not need to be pre-defined. Therefore, there exists a need for an application integration method that is capable of efficiently operating when there are no pre-defined connections between an object and any other application defined within the computer operating system.